//-------------------------------------------------------------------
//	Copyright (c) 2010-2012 Zhirnov Andrey
//	This file is part of the "UXGEN" project.
//	See copyright notice in "Engine.h".
//-------------------------------------------------------------------

#ifndef _UX_DEFAULT_RENDER_TECHNIQUE_H
#define _UX_DEFAULT_RENDER_TECHNIQUE_H

#include "IRenderTechnique.h"

namespace Engine
{
namespace RenderUtils
{

	//
	// Default Render Technique
	//

	class _EXPORT_ CDefaultRenderTech : public IRenderTechnique
	{
	public:
		virtual void Resize(const uvec2 &vDim)														{}
		
		virtual void SetupRenderQueue(IRenderQueue *)												{}

		// Post Processes //
		virtual bool SetPostProcess(const IPostProcessBasePtr &pPP)									{ return false; }
		virtual bool AddPostProcess(const IPostProcessBasePtr &pPP, uint uIndex)					{ return false; }

		// Program //
		virtual bool GetProgram(e_program::type, e_render_layer::type, CBaseProgramShellPtr &)		{ return false; }
		virtual void GetMaterialStateLock(e_render_layer::type, e_render_state_lock::type &eRes)	{ eRes = e_render_state_lock::UNKNOWN; }

		virtual void Render(IRenderQueue *, uint)													{}
		virtual bool IsReady()																		{ return true; }

		virtual e_render_layer::type	GetCurrentRenderLayer()										{ return e_render_layer::LAYER_1; }
		virtual e_technique::type		GetType() const												{ return e_technique::UNKNOWN; }

		// CEngBaseObject //
		virtual void Release()																		{}
	};

//-------------------------------------------------------------------

}	// RenderUtils
}	// Engine

#endif	// _UX_DEFAULT_RENDER_TECHNIQUE_H